package com.ssd.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.scripting.support.ResourceScriptSource;

/**
 * lua脚本配置类
 */
@Configuration
public class RedisLuaConfiguration {

    /**
     * 定义一个名为seizeCouponScript的Bean
     * 该Bean是一个Lua脚本，用于在Redis中执行复杂的逻辑，例如处理优惠券的领取操作
     *
     * @return DefaultRedisScript<Integer> 返回一个DefaultRedisScript对象，用于执行Lua脚本
     */
    @Bean("seizeCouponScript")
    public DefaultRedisScript<Integer> seizeCouponScript() {
        DefaultRedisScript<Integer> redisScript = new DefaultRedisScript<>();
        //resource目录下的scripts文件下的seizeCouponScript.lua文件
        redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("scripts/seizeCouponScript.lua")));
        redisScript.setResultType(Integer.class);
        return redisScript;
    }
}
